struct ListNode* removeElements(struct ListNode* head, int val) {
    struct ListNode* Point = (struct ListNode*)malloc(sizeof(struct ListNode));
    Point->next = head;
    struct ListNode* temp = Point;
    while(temp->next != NULL) {
        if(temp->next->val == val) {
            struct ListNode* toDelete = temp->next;
            temp->next = toDelete->next;
            free(toDelete);
        } else {
            temp = temp->next;
        }
    }
    struct ListNode* newHead = Point->next;
    free(Point);
    return newHead;
}
